package cn.z2huo.knowledge.basic.exception.checkexception;

import java.io.IOException;

/**
 * <p>受检异常测试
 *
 * @author z2huo
 */
class CheckedExceptionTest {

    /**
     * 方法内部处理了受检异常
     */
    void testTryCatch() {
        if (true) {
            try {
                throw new IOException("IOException");
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }

    /**
     * 方法内部未处理受检异常，抛出受检异常
     * @throws IOException
     */
    void testThrow() throws IOException {
        throw new IOException("IOException");
    }

    /**
     * 父方法调用内部处理了受检异常的方法
     */
    void superMethod() {
        this.testTryCatch();
    }

    /**
     * 父方法调用内部未处理受检异常的方法，在父方法中处理
     */
    void superMethodTryCatch() {
        try {
            this.testThrow();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 父方法调用内部未处理受检异常的方法，父方法抛出受检异常
     * @throws IOException
     */
    void superMethodThrow() throws IOException {
        this.testThrow();
    }

    public static void main(String[] args) {

    }

}
